/*
 * Copyright (c) 2022  by Junzhao
 * THIS FILE IS PART OF JAVASE Song Huongkang PROJECT
 * All Rights Reserved.
 */

package 学习.下.final关键字;



/**
 * @description final关键字
 *             最终的
 *             修饰 类 方法 变量（使用大写字母）
 *
 *             类：不可被继承 如String System StringBuffer
 *             方法：不可被重写 如Object 的getClass()
 *             “变量”：不可被更改 是为常量 修饰属性（显示初始化,代码块中初始化，构造器中初始化，不可以使用set方法）
 *                                    修饰局部变量（不可更改）
 *             static final 修饰方法、属性 意味着 属性（全局常量） 方法（静态不可重写的方法）
 * @author 俊昭
 * @date 2022/4/6
*/
public class FinalTest {

    final int WIDTH = 10 ;

    final int LEFT;
    final int RIGHT;

//    final int UP;

    {
        LEFT =1;
    }
    public FinalTest(){
        RIGHT =3;
    }
    public FinalTest(int n){
        RIGHT = n;
    }
    public void show(){
        final int NUM =10;// 常量
//        NUM+=20;无法将值赋给 final 变量 'NUM'
    }
    public void show(final int NUM){
//        NUM = 20;无法将值赋给 final 变量 'NUM'
    }


//    public void setUP(int UP){
//        this.UP=UP;// 无法将值赋给 final 变量 'UP'
//    }

//    public void doWidth(){
//        width = 20;
//    }// 无法将值赋给 final 变量 'width'


    public static void main(String[] args) {
        FinalTest finalTest = new FinalTest();
        finalTest.show(10);

    }
}
class AA{
    public final void show(){

    }
}
class BB extends AA{
//    public void show(){}// 'show()' 无法重写 '学习.下.final关键字.AA' 中的 'show()'；重写的方法为 final


}



/**
 * @description   不可被继承
*/
final class FinalA{

}

//class FinalB extends FinalA{}// 无法从final '学习.下.final关键字.FinalA' 继承
//class FinalB extends String{}//无法从final 'java.lang.String' 继承

